function A() {
	var locate1 = "1oh";
	this.publicName = "public";
	var method1 = function() {
			alert(locate1);
		};
	globalVar = "gobal";
}
A.staticName = "static";
A.prototype = {
	locate2: "2oh",
	method2: function() {
		alert(this.locate2);
	},
	method3: function() {
		alert(locate1);
		method1();
	}
}
var a = new A();
a.method2();
// 执行a.method3()方法无法访问locate1 所有浏览器会提示脚本错误：locate1 is not defind
var b = new A();
/**
 * this定义的变量this.publicName Function的实例化变量，Function被实例化了，可以通过实例化对象访问该变量,
 * 如果函数不是被实例化，而是被调用，则this指向执行该函数的上下文，publicName变量将会在上下文中被创建
 */
console.log(b.publicName);
/**
 * A.locate1 function的局部变量, 只有函数运行的时候再函数内部才可以访问该变量
 */
console.log(A.locate1);
/**
 * A.staticName函数的静态变量，函数不需要实例化也可以获取, 实例化对象不可以访问该静态变量
 */
console.log(A.staticName);
console.log(b.staticName);

/**
 * 在函数内不适用var定义的变量为全局变量，如gobalVar 全局变量默认将会创建在window下,也属于window下的一个静态变量
 */
console.log(globalVar);
console.log(window.globalVar);

/**
 *当你视图编写一个类,你有两种方法来构造你的实例化变量
 *1、在函数内使用this关键字
 *2、使用prototype原型属性来定义
 *使用this的关键字好处在于,实例化变量可以访问函数内的局部变量，不好的是每次实例化的时候都会执行该代码
 *使用prototype原型属性的好处刚好相反，每次实例化对象的时候都执行该代码，但是无法访问函数内部的变量
 */